package com.example.baiguangsystem.service;

import com.example.baiguangsystem.entity.LoginStatusEnum;
import com.example.baiguangsystem.entity.Paging;
import com.example.baiguangsystem.entity.User;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.net.http.HttpResponse;
import java.util.List;

/**
 * 用户service业务类
 *
 * @Author: 27641
 * @ProjectName: BaiGuangSystem
 * @Date: 2022/02/02/23:04
 * @noinspection SpellCheckingInspection
 */
public interface UserService {

    /**
     * 用户登录业务功能,可以实现用户登录并且记录用户登录状态信息
     *
     * @param user         前端用户输入的登录信息封装
     * @param session      用于存储用户状态
     * @param httpResponse 用于登录成功之后发送cookie给客户端
     * @return 登录状态
     */
    public LoginStatusEnum login(User user, HttpSession session, HttpServletResponse httpResponse);

    /**
     * 实现用户注销
     *
     * @param session  用于清除用户信息
     * @param request  请求参数
     * @param response 响应参数
     */
    public void logoutUser(HttpSession session, HttpServletRequest request, HttpServletResponse response);


    /**
     * 新增用户功能
     *
     * @param user 新增用户信息封装对象
     * @return boolean 返回true表示新增成功
     */
    public boolean addNewUser(User user);

    /**
     * 查询用户信息
     *
     * @param session session域对象
     * @param request 请求参数对象
     * @return 查询结果
     */
    public User selectUserMessagesById(HttpSession session, HttpServletRequest request);

    /**
     * 查找所有用户信息(root)
     *
     * @return 所有用户信息封装
     */
    public List<User> findUserAll();

    /**
     * 查询所有用户信息（root）（分页查询）
     *
     * @param paging 查询信息封装
     * @return 查询得到的所有用户结果封装
     */
    public List<User> findUserAllLimit(Paging paging);
}
